package Day_0211.Maven;

/**
 * @author zxc
 * @date 2023/02/11 19:17
 **/
public class Maven_Dependency_Resolution_Mechanism {
    public static void main(String[] args) {
        /**
         * 谈一谈对于依赖解析机制的理解
         * ===》
         * 1.当依赖的范围是 system 的时候，Maven 直接从本地文件系统中解析构件。
         *
         * 2.根据依赖坐标，去计算仓库路径
         * （1）尝试直接从本地仓库寻找构件，如果发现对应的构件，就解析成功。
         * （2）如果在本地仓库不存在相应的构件，就遍历所有的远程仓库，发现后，下载并解析使用。
         *
         * 3.如果依赖的版本是 RELEASE 或 LATEST，
         * （1）基于更新策略，读取所有远程仓库的元数据文件（groupId/artifactId/maven-metadata.xml）;
         * （2）将其与本地仓库的对应元合并后，计算出RELEASE 或者 LATEST 真实的值;
         * （3）然后，基于该值检查本地仓库，或者从远程仓库下载。
         *
         * 4.如果依赖的版本是 SNAPSHOT
         * （1）基于更新策略，读取所有远程仓库的元数据文件，将它与本地仓库对应的元数据合并，得到最新快照版本的值，
         * （2）然后，根据该值检查本地仓库，或从远程仓库下载。
         *
         * 5.如果最后解析得到的构件版本包含有时间戳，
         * （1）先将该文件下载下来;
         * （2）再将文件名中时间戳信息删除，剩下 SNAPSHOT 并使用（以非时间戳的形式使用）。
         *
         */
    }
}
